DATA … RENAMING WITH SUFFIX

Häufig möchte man eine interne Tabelle definieren, die alle Felder aus zwei Dictionarytabellen besitzt. Das ist natürlich möglich. Diese Dictionary-Struktur heißt ZMARAMARC:

Bild_2014_06_06_150618

 

DATA gt_data TYPE STANDARD TABLE OF zmaramarc.
DATA gs_data TYPE zmaramarc.

Mit dieser Definition erzeugt man eine Tabelle mit zwei Strukturen. Die Felder werden über den Strukturnamen angesprochen: gs_data-mara-matnr.

Problem

Diese Datenstruktur macht bei der Verwendung in ALVs Probleme, da der Feldkatalog nicht korrekt erzeugt werden kann: Doppelte Feldnamen werden ignoriert Eine Ausnahme bildet das SALV-Model cl_salv_table. Diese Klasse kann mit der Datenstruktur umgehen. Die normalen ALVs haben jedoch Probleme, weil es keine einzelnen Feldnamen gibt.

Lösung

SAP bietet den INCLUDE-Zusatz RENAMING WITH SUFFIX an. Mithilfe dieses Zusatzes ist es einerseits möglich, die Struktur zu behalten und andererseits auch eindeutige Feldnamen zu haben:

TYPES BEGIN OF ty_data.
        INCLUDE TYPE mara AS mara RENAMING WITH SUFFIX mara.
        INCLUDE TYPE marc AS marc RENAMING WITH SUFFIX marc.
TYPES END OF ty_data.

Die Felder können also weiterhin über die Struktur angesprochen werden: gs_data-mara-matnr. Es werden jedoch auch eindeutige Feldname erzeugt, indem jedem Feldnamen der Suffix angehängt wird: gs_data-matnrmara.

Im Dictionary heißt die Option allerdings nicht “SUFFIX”, sondern Gruppe und ist nur verfügbar, wenn die Komponenten per INCLUDE eingebunden werden:

Bild_2014_06_06_150650

 

Nebeneffekt

Bei beiden Versionen der Datendefinition ist es übrigens möglich, die komplette Tabelle mittels JOIN zu füllen:

SELECT * FROM mara
 INNER JOIN marc ON marc~matnr = mara~matnr
  INTO TABLE gt_data.

Sind in der MARC mehrere Sätze zu einem Material vorhanden, so wird die Struktur MARA jedesmal korrekt gefüllt. Die MARA-Daten sind dann zwar mehrfach vorhanden, aber die Verarbeitungslogik wird dadurch eventuell einfacher.

Enno Wulff